home *** CD-ROM | disk | FTP | other *** search
/ Network Supervisor's Toolkit / Network Supervisor's Toolkit.iso / tools / lu62 / debug / iad.c < prev    next >
C/C++ Source or Header  |  1996-07-10  |  2KB  |  80 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <dos.h>
  4.  
  5. #define MONO  1             /* Constant values for adapter */
  6. #define CGA   2                         /*   variable */
  7. #define EGA   3
  8.  
  9.  
  10. extern int vmode;
  11.  
  12. /* Initialize video adapter indicator.
  13.  *
  14.  * Determine whether adapter is monochrome, ega, or cga.
  15.  * Issue set mode BIOS command, using standard mode for color,
  16.  * B&W, or monochrome.
  17.  */
  18. init_adapter()
  19. {
  20.     int mode;                 /* Value returned by BIOS call */
  21.     union REGS regs;
  22.  
  23.     regs.h.ah = 0xF;
  24.     int86(0x10, ®s, ®s);   /* Get video mode, place in AL */
  25.     mode = regs.h.al;
  26.     if (mode == 7)               /* 7 and 15 are MONO modes */
  27.         vmode = MONO;
  28.     else if (mode == 15) {
  29.         vmode = MONO;
  30.         set_mode(7);         /* Set to 7, standard MONO mode */
  31.     } else {
  32.         vmode = is_ega();         /* Test for CGA vs. EGA */
  33.         if (mode >= 8 && mode <=14)
  34.             set_mode(3);
  35.         else switch (mode) {
  36.         case 1:                /* Color */
  37.         case 3:
  38.         case 4:    set_mode(3);        /* 3 is standard color mode */
  39.             break;
  40.         case 0:                /* B & W */
  41.         case 2:
  42.         case 5:
  43.         case 6:    set_mode(2);        /* 2 is standard B & W mode */
  44.             break;
  45.         } /* end switch */
  46.     } /* end else */
  47. }
  48.  
  49.  
  50. is_ega()
  51. {
  52.     union REGS regs;
  53.     char far *ega_byte = (char far *) 0x487;
  54.     int  ega_inactive;
  55.  
  56.     regs.h.ah = 0x12;
  57.     regs.x.cx = 0;
  58.     regs.h.bl = 0x10;
  59.     int86(0x10, ®s, ®s);
  60.     if (regs.x.cx == 0)
  61.         return (CGA);
  62.     ega_inactive = *ega_byte & 0x8;
  63.     if (ega_inactive)
  64.         return (CGA);
  65.     return (EGA);
  66. }
  67.  
  68. set_mode(mode)
  69. int    mode;
  70. {
  71.     union REGS regs;
  72.  
  73.     regs.h.al = (char) mode;
  74.     regs.h.ah = 0;
  75.     int86(0x10, ®s, ®s);
  76.     regs.h.al = 0;
  77.     regs.h.ah = 5;
  78.     int86(0x10, ®s, ®s);
  79. }
  80.